home *** CD-ROM | disk | FTP | other *** search
/ PC User 2003 May / Disc 2 / PCU0503CD2.iso / Crystal / 3rdparty / JavaVM / Plug-in / jplugin.exe / rt.jar / sun / awt / windows / WComponentPeer.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-16  |  7.1 KB  |  317 lines

  1. package sun.awt.windows;
  2.  
  3. import java.awt.AWTEvent;
  4. import java.awt.Color;
  5. import java.awt.Component;
  6. import java.awt.Container;
  7. import java.awt.Cursor;
  8. import java.awt.Dimension;
  9. import java.awt.Font;
  10. import java.awt.FontMetrics;
  11. import java.awt.Graphics;
  12. import java.awt.Image;
  13. import java.awt.Point;
  14. import java.awt.Rectangle;
  15. import java.awt.Toolkit;
  16. import java.awt.event.PaintEvent;
  17. import java.awt.image.ColorModel;
  18. import java.awt.image.ImageObserver;
  19. import java.awt.image.ImageProducer;
  20. import java.awt.peer.ComponentPeer;
  21. import java.awt.peer.LightweightPeer;
  22. import sun.awt.ScreenUpdater;
  23. import sun.awt.SunToolkit;
  24. import sun.awt.UpdateClient;
  25.  
  26. abstract class WComponentPeer extends WObjectPeer implements ComponentPeer, UpdateClient {
  27.    private boolean repaintPending;
  28.    private Rectangle repaintRect;
  29.    private int updateX1;
  30.    private int updateY1;
  31.    private int updateX2;
  32.    private int updateY2;
  33.  
  34.    public synchronized native void show();
  35.  
  36.    public synchronized native void hide();
  37.  
  38.    public synchronized native void enable();
  39.  
  40.    public synchronized native void disable();
  41.  
  42.    public native Point getLocationOnScreen();
  43.  
  44.    public void setVisible(boolean var1) {
  45.       if (var1) {
  46.          this.show();
  47.       } else {
  48.          this.hide();
  49.       }
  50.    }
  51.  
  52.    public void setEnabled(boolean var1) {
  53.       if (var1) {
  54.          this.enable();
  55.       } else {
  56.          this.disable();
  57.       }
  58.    }
  59.  
  60.    public void setBounds(int var1, int var2, int var3, int var4) {
  61.       this.reshape(var1, var2, var3, var4);
  62.    }
  63.  
  64.    public void paint(Graphics var1) {
  65.       var1.setColor(((Component)super.target).getForeground());
  66.       var1.setFont(((Component)super.target).getFont());
  67.       ((Component)super.target).paint(var1);
  68.    }
  69.  
  70.    public void repaint(long var1, int var3, int var4, int var5, int var6) {
  71.       this.addRepaintArea(var3, var4, var5, var6);
  72.       ScreenUpdater.updater.notify(this, var1);
  73.    }
  74.  
  75.    public void print(Graphics var1) {
  76.       ((WGraphics)var1).print(this);
  77.    }
  78.  
  79.    public synchronized native void reshape(int var1, int var2, int var3, int var4);
  80.  
  81.    native void nativeHandleEvent(AWTEvent var1);
  82.  
  83.    public void handleEvent(AWTEvent var1) {
  84.       int var2 = var1.getID();
  85.       switch (var2) {
  86.          case 800:
  87.          case 801:
  88.             Object var3 = null;
  89.             Rectangle var4 = ((PaintEvent)var1).getUpdateRect();
  90.             Graphics var5 = ((Component)super.target).getGraphics();
  91.             if (var5 == null) {
  92.                return;
  93.             } else {
  94.                var5.clipRect(var4.x, var4.y, var4.width, var4.height);
  95.                if (var2 == 800) {
  96.                   this.clearRectBeforePaint(var5, var4);
  97.                   ((Component)super.target).paint(var5);
  98.                } else {
  99.                   ((Component)super.target).update(var5);
  100.                }
  101.  
  102.                var5.dispose();
  103.             }
  104.          default:
  105.             this.nativeHandleEvent(var1);
  106.       }
  107.    }
  108.  
  109.    void clearRectBeforePaint(Graphics var1, Rectangle var2) {
  110.       var1.clearRect(var2.x, var2.y, var2.width, var2.height);
  111.    }
  112.  
  113.    public Dimension getMinimumSize() {
  114.       return ((Component)super.target).getSize();
  115.    }
  116.  
  117.    public Dimension getPreferredSize() {
  118.       return this.getMinimumSize();
  119.    }
  120.  
  121.    public boolean isFocusTraversable() {
  122.       return false;
  123.    }
  124.  
  125.    public ColorModel getColorModel() {
  126.       return WToolkit.getStaticColorModel();
  127.    }
  128.  
  129.    public Toolkit getToolkit() {
  130.       return Toolkit.getDefaultToolkit();
  131.    }
  132.  
  133.    public Graphics getGraphics() {
  134.       WGraphics var1 = new WGraphics(this);
  135.       ((Graphics)var1).setColor(((Component)super.target).getForeground());
  136.       ((Graphics)var1).setFont(((Component)super.target).getFont());
  137.       return var1;
  138.    }
  139.  
  140.    public FontMetrics getFontMetrics(Font var1) {
  141.       return WFontMetrics.getFontMetrics(var1);
  142.    }
  143.  
  144.    public void dispose() {
  145.       WToolkit.targetDisposedPeer(super.target, this);
  146.       ScreenUpdater.updater.removeClient(this);
  147.       this._dispose();
  148.    }
  149.  
  150.    native void _dispose();
  151.  
  152.    public synchronized void setForeground(Color var1) {
  153.       this._setForeground(var1.getRGB());
  154.    }
  155.  
  156.    public synchronized void setBackground(Color var1) {
  157.       this._setBackground(var1.getRGB());
  158.    }
  159.  
  160.    public native void _setForeground(int var1);
  161.  
  162.    public native void _setBackground(int var1);
  163.  
  164.    public synchronized native void setFont(Font var1);
  165.  
  166.    public synchronized native void requestFocus();
  167.  
  168.    public synchronized native void setCursor(Cursor var1);
  169.  
  170.    public Image createImage(ImageProducer var1) {
  171.       return new WImage(var1);
  172.    }
  173.  
  174.    public Image createImage(int var1, int var2) {
  175.       return new WOffScreenImage((Component)super.target, var1, var2);
  176.    }
  177.  
  178.    public boolean prepareImage(Image var1, int var2, int var3, ImageObserver var4) {
  179.       return WToolkit.prepareScrImage(var1, var2, var3, var4);
  180.    }
  181.  
  182.    public int checkImage(Image var1, int var2, int var3, ImageObserver var4) {
  183.       return WToolkit.checkScrImage(var1, var2, var3, var4);
  184.    }
  185.  
  186.    public void updateClient(Object var1) {
  187.       Rectangle var2 = null;
  188.       synchronized(this){}
  189.  
  190.       try {
  191.          if (this.repaintPending) {
  192.             var2 = this.repaintRect;
  193.             this.repaintPending = false;
  194.          }
  195.       } catch (Throwable var5) {
  196.          throw var5;
  197.       }
  198.  
  199.       if (var2 != null) {
  200.          this.postEvent(new PaintEvent((Component)super.target, 801, var2));
  201.       }
  202.  
  203.    }
  204.  
  205.    public String toString() {
  206.       return this.getClass().getName() + "[" + super.target + "]";
  207.    }
  208.  
  209.    WComponentPeer(Component var1) {
  210.       super.target = var1;
  211.       this.repaintRect = new Rectangle();
  212.       this.repaintPending = false;
  213.       Container var2 = SunToolkit.getNativeContainer(var1);
  214.       WComponentPeer var3 = (WComponentPeer)WToolkit.targetToPeer(var2);
  215.       this.create(var3);
  216.       this.initialize();
  217.       this.start();
  218.    }
  219.  
  220.    abstract void create(WComponentPeer var1);
  221.  
  222.    synchronized native void start();
  223.  
  224.    void initialize() {
  225.       this.initZOrderPosition();
  226.       if (((Component)super.target).isVisible()) {
  227.          this.show();
  228.       }
  229.  
  230.       Color var1 = ((Component)super.target).getForeground();
  231.       if (var1 != null) {
  232.          this.setForeground(var1);
  233.       }
  234.  
  235.       Font var2 = ((Component)super.target).getFont();
  236.       if (var2 != null) {
  237.          this.setFont(var2);
  238.       }
  239.  
  240.       if (!((Component)super.target).isEnabled()) {
  241.          this.disable();
  242.       }
  243.  
  244.       Rectangle var3 = ((Component)super.target).getBounds();
  245.       this.setBounds(var3.x, var3.y, var3.width, var3.height);
  246.       Cursor var4 = ((Component)super.target).getCursor();
  247.       if (var4 != Cursor.getPredefinedCursor(0)) {
  248.          this.setCursor(var4);
  249.       }
  250.  
  251.    }
  252.  
  253.    private synchronized void addRepaintArea(int var1, int var2, int var3, int var4) {
  254.       if (!this.repaintPending) {
  255.          this.repaintPending = true;
  256.          this.repaintRect = new Rectangle(var1, var2, var3, var4);
  257.       } else {
  258.          this.repaintRect = this.repaintRect.union(new Rectangle(var1, var2, var3, var4));
  259.       }
  260.    }
  261.  
  262.    void handleRepaint(int var1, int var2, int var3, int var4) {
  263.    }
  264.  
  265.    void handleExpose(int var1, int var2, int var3, int var4) {
  266.       this.postEvent(new PaintEvent((Component)super.target, 800, new Rectangle(var1, var2, var3, var4)));
  267.    }
  268.  
  269.    void handlePaint(int var1, int var2, int var3, int var4) {
  270.       this.postEvent(new PaintEvent((Component)super.target, 800, new Rectangle(var1, var2, var3, var4)));
  271.    }
  272.  
  273.    void postEvent(AWTEvent var1) {
  274.       WToolkit.postEvent(var1);
  275.    }
  276.  
  277.    protected void finalize() throws Throwable {
  278.       this._dispose();
  279.       super.finalize();
  280.    }
  281.  
  282.    public void beginValidate() {
  283.       this._beginValidate();
  284.    }
  285.  
  286.    public native void _beginValidate();
  287.  
  288.    public native void endValidate();
  289.  
  290.    public void initZOrderPosition() {
  291.       Container var1 = ((Component)super.target).getParent();
  292.       WComponentPeer var2 = null;
  293.       if (var1 != null) {
  294.          Component[] var3 = var1.getComponents();
  295.  
  296.          for(int var4 = 0; var4 < var3.length && var3[var4] != super.target; ++var4) {
  297.             Object var5 = WToolkit.targetToPeer(var3[var4]);
  298.             if (var5 != null && !(var5 instanceof LightweightPeer)) {
  299.                var2 = (WComponentPeer)var5;
  300.             }
  301.          }
  302.       }
  303.  
  304.       this.setZOrderPosition(var2);
  305.    }
  306.  
  307.    native void setZOrderPosition(WComponentPeer var1);
  308.  
  309.    public Dimension minimumSize() {
  310.       return this.getMinimumSize();
  311.    }
  312.  
  313.    public Dimension preferredSize() {
  314.       return this.getPreferredSize();
  315.    }
  316. }
  317.